package com.iwop.moto.service;

import com.iwop.moto.model.SuperRecordModel;
import org.springframework.stereotype.Controller;

import java.util.List;

/**
 * @author Created by liuwb on 2016/7/15.
 */
@Controller
public interface MGoodsService {

    /**
     * liuwb 2016-07-25 16:44
     * 2016-07-25 新增商品
     * @param SRModel 参数组
     */
    void insertSelective (SuperRecordModel SRModel);

    /**
     * 功能:新增商品明细（规格）
     */
    void insertDetailSelective (SuperRecordModel SRModel);

    /**
     * 功能:根据状态获取 销售中/审核中/审批未通过的商品列表
     * 参数:storeId 店铺id
     * 参数:status 状态 1销售中 0审核中 2未通过
     */
    List<SuperRecordModel> findStoreByIdAndStatus(SuperRecordModel SRModel);

    /**
     * 功能:商品 - 详细信息 - 主表
     * 参数: sid 主键
     */
    SuperRecordModel findFgoodsById(SuperRecordModel SRModel);

    /**
     * 功能:商品 - 详细信息 - 商品规格明细
     * 参数: sid 主键
     */
    List<SuperRecordModel> findFgoodsListDetail(SuperRecordModel SRModel);

    /**
     * 功能:商品 - 详细信息 - 详情
     * 参数: sid 主键
     */
    SuperRecordModel findFgoodsDetailById(SuperRecordModel SRModel);



    /**
     * 功能:商品 - 修改库存
     * 参数:sid 商品规格信息主键
     * 参数:stocknums 修改的库存数
     */
    void upMGoodsDetailStocknums(SuperRecordModel SRModel);

    /**
     * 功能: 商品修改审批状态
     * 参数: sid 商品主键
     * 参数: status [0:审核中][1:通过][2:拒绝][3:取消发布]
     * 参数: checkuserid 审批人id
     */
    void upMGoodsCheckstatus(SuperRecordModel SRModel);

    /**
     * 功能: 商品修改上架状态
     * 参数: sid 商品主键
     * 参数: status [0:未发布][1:上架][2:下架]
     */
    void upMGoodsStatusFlag(SuperRecordModel SRModel);
    void upMGoodsDetailStatusFlag(SuperRecordModel SRModel);

    /**
     * 功能:获取审批状态
     * 参数:sid
     */
    String getCheckStatusBySid(SuperRecordModel SRModel);

    /**
     * 功能:更新商品发货地，商品描述
     * 参数:sid 商品主键
     * 参数:describe 商品描述
     * 参数:address 商品归属地
     */
    void upMGoodsAddressDescribe(SuperRecordModel srModel);

    /**
     * 功能：获取商品详情上架的列表，通过商品详情Id
     * */
    List getMGoodsByDetailId(SuperRecordModel srm);

    boolean findFGoodsdetailIsOut(String mGoodsId);

    void upMGoodsStocknums(SuperRecordModel srModel);

    void upMgoodsDeleteFlag(SuperRecordModel srModel);

    void upMgoodsDetailDelFlag(SuperRecordModel srModel);

    List<SuperRecordModel> findFgoodsDetailByGoodsId(SuperRecordModel SRModel);

    List<SuperRecordModel> findMGoodsListToAudit(SuperRecordModel srModel);

    int countMGoodsToCheck(SuperRecordModel srModel);

    void deleteMGoodsDetail(String userId);

    void deleteMGoods(String userId);
}
